package com.xnyzc.lhy.common.constant;

import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;

import java.util.Date;

/**
 * 公用配置
 *
 * @Author: scootXin
 * @Date: 2018/12/11 9:57
 */
public interface CommonConstant {

    /**
     * 锁定失效时间  -- 分钟
     */
    int LOCK_EXPIRE_TIME = 10;

    /**
     * 乐观锁失效时间 -- 分钟
     */
    int OPTIMISTIC_LOCK_EXPIRE_TIME = 60;

    /**
     * 编码
     */
    String UTF8 = "UTF-8";

    /**
     * 请求类型
     */
    String REQUEST_GET="get";

    String REQUEST_POST="post";

    /**
     * JSON 资源
     */
    String CONTENT_TYPE = "application/json; charset=utf-8";

    String LOGISTICS_HEADER_CONTENT_TYPE = "multipart/form-data";

    String LOGISTICS_HEADER_CONTENT_TYPE_FORM = "application/x-www-form-urlencoded";

    /**
     * token请求头名称
     */
    String REQ_HEADER = "Authorization";

    /**
     * token 签名
     */
    String REQ_HEADER_CLIENT_ID = "clientId";
    String REQ_HEADER_REQ_TIME = "reqTime";
    String REQ_HEADER_SIGN = "sign";
    String REQ_HEADER_USER_TYPE="userType";
    String REQ_HEADER_TAG="tag";
    String REQ_APP_CODE = "appCode";

    /**
     * client信息过期时间（秒）
     */
    int CLINET_EXPIRE_TIME = 1800;

    /**
     * token分割符
     */
    String TOKEN_SPLIT = "bearer ";

    /**
     * 验证码头
     */
    String REDIS_SMS_CODE = "_R_SMS_CODE_";
    /**
     * 验证码过期时间（秒）
     */
    int REDIS_SMS_CODE_EXPIRE_TIME = 60;

    /**
     * 验证码每日错误次数
     */
    int REDIS_SMS_CODE_ERROR_NUM = 5;

    /**
     * 登录token过期时间
     */
    int LOGIN_DEFAULT_EXPIRE_TIME = 10 * 60 * 1000;

    /**
     * 微信
     */
    String WECHAT_ACCESS_TOKEN = "_R_WECHAT_AT_";
    /**
     * 微信过期时间
     */
    int REDIS_WECHAT_ACCESS_TOKEN_EXPIRE_TIME = 7000;

    /**
     * 微信sessionKey
     */
    String REDIS_WECHAT_SESSION = "_R_WECHAT_SESSION_";

    /**
     * 微信formIds
     */
    String REDIS_WECHAT_FORMIDS = "_R_WECHAT_FORMIDS_";

    /**
     * 微信formids过期时间
     */
    int REDIS_WECHAT_FORMIDS_EXPIRE_TIME = 518400;

    /**
     * 短信验证码获取控制key
     */
    String REDIS_SMS_LIMIT = "bolt-_REDIS_SMS_LIMIT_";

    /**
     * 短信验证码获取控制过期时间 modify by jon
     */
    int REDIS_REDIS_SMS_LIMIT_EXPIRE_TIME = 6000;

    /**
     * redis默认过期时间
     */
    int REDIS_DEFAULT_EXPIRE_TIME = 10 * 60 * 1000;

    /**
     * 设置完成时间
     */
    Date DEF_END_TIME = DateTime.parse("2099-01-01 01:01:01", DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")).toDate();

    /**
     * 因乐观锁更新失败时，重试次数
     */
    int VERSION_ERR_RETRY_NUM = 2;
    /**
     * 因乐观锁更新失败时， 重试间隔时间
     */
    int VERSION_ERR_RETRY_WAIT_TIME = 100;

    /**
     * 清算等待时间
     */
    int CLEAR_WAIT_TIME = 3;
}
